一.接口
1.接口概述
   a.接口也是一种引用数据类型
     java中的引用数据类型有类,数组
     引用数据类型可以赋值null或者对象(对象在内存中的地址)
   b.接口的出现是为了弥补java中只有单继承的不足
2.接口格式
   //类的定义格式
   class 类名{
       成员变量
       成员方法
   }
   //接口的定义格式
   interface 接口名{
      成员变量
       成员方法
   }
   class 类名 implements 接口名{//类与类之间使用extends,类与接口之间是implements

   }
   接口和抽象类一样,都不能创建对象
   接口编译之后也是生成 接口名.class 文件
3.接口中的成员变量
/*
 *  接口中的成员变量加的有默认修饰符
 *  public static final
 *  static修饰的成员可以通过类名或接口名直接调用 类名/接口名.成员变量
 *  final修饰的变量都是常量(final修饰的变量只能赋值一次)
 **/
4.接口中的成员方法
  a.抽象方法
        //1.在接口中定义抽象方法
     //在接口中,定义抽象方法可以不用加public abstract,编译器默认会加
  b.默认方法
        /*
         *使用前提: JDK 8(包含8)以上版本才能定义默认方法
         * 默认方法
         *   default 返回值类型 方法名(形参列表){
         *
         *   }
         * 1.默认方法可以有方法体
         * 2.默认方法可以被子类重写
         */
  c.私有方法
   /**
    * 接口中的私有方法:JDK 9(包含9)以上版本才能在接口中定义私有方法
    * private 返回值类型 方法名(形参列表){
    *
    * }
    * 1.接口中的私有方法只能在本接口中使用,不能被子类使用
    */
5.类和接口的关系
  a.
/*
 *  1.一个类可以实现多个接口(一个类只能直接继承一个类)
 *  格式:
 *   class 类名 implements 接口1,接口2,...{
 *
 *     //重写方法
 *   }
 */
b.
/**
 * 2.一个类可以继承另外一个类同时实现多个接口
 * 格式:
 *   class 类名1 extends 类名2 implements 接口1,接口2,...{
 *
 *
 *   }
 */
c.
/**
 * 3.一个接口可以继承多个接口
 * 格式
 *   interface 接口名1 extends 接口名2,接口名3,...{
 *
 *
 *   }
 */
二.多态
1.多态概述
            人
  婴儿  学生  白领  丈夫  父亲  爷爷
 人这一生扮演各种各种角色,无论你扮演角色,都指代的是自己
 多态就是一个对象的多种形态
2.多态体现
  a.向上转型(自动类型提升)
    1. 普通类的向上转型
         父类型 引用变量名= new 子类();
    2. 抽象类的向上转型
       抽象父类型 引用变量名=new 子类();
    3. 接口向上转型
         格式:
        父接口类型 引用变量= new 实现类();
  b.向下转型(强制向下转型)
     子类型 引用变量=(子类型)父类型引用变量
3.多态中成员访问特点
  a.成员变量
       多态形式下,成员变量无论编译时期还是运行时期都参照赋值号左边的类型
  b.成员方法
        多态形式下,成员方法编译时期看赋值号左边类型,运行时期看赋值号右边类型
4.instanceof 运算符
        * 格式:
        *  引用变量名 instanceof 类名或接口名
        instanceof运算符会去检测引用变量指向的对象能否赋值给右边类型,如果可以赋值结果为true,否则结果为false